// Problem: 
// Contest: 
// URL: 
// Memory Limit: 
// Time Limit: 
// #pragma GCC optimize("Ofast")
// #pragma GCC optimize("unroll-loops")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
	return s*w;
}
bool f=0;
int n;
vector<int> v(3001),w(4);
void dfs(int c,int t)
{
	if(f)return ;
	if(t==4)
	{
		if(c==n)f=1;
		return ;
	}
	for(int i=0;i<=1000;i++)
	{
		w[t]=i;
		dfs(c+v[i],t+1);
		if(f)return ;
	}
}
signed main()
{
	int t=1;
//	cin>>t;
	while(t--)
	{
		for(int i=1;i<=3000;i++)
		{
			v[i]=i*i;
		}
		cin>>n;
//		dfs(0,0);
//		for(int i=0;i<4;i++)cout<<w[i]<<" ";
		for(int i=0;;i++)
		{
			if(4*v[i]>n)break;
			for(int j=0;;j++)
			{
				if(v[i]+3*v[j]>n)break;
				for(int k=0;;k++)
				{
					if(v[i]+v[j]+2*v[k]>n)break;
					else
					{
						int z=sqrt(n-v[i]-v[j]-v[k]);
						if(v[i]+v[j]+v[k]+v[z]==n)
						{
							cout<<i<<" "<<j<<" "<<k<<" "<<z;
							return 0;
						}
							
					}
				}
			}
				
		}
	}
	return 0;
}
